.radio-wrapper {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
  color: rgba(0, 0, 0, 0.88);
  font-size: 14px;
  line-height: 1.6;
  list-style: none;
  position: relative;
  display: inline-flex;
  align-items: baseline;
  cursor: pointer;
  margin-inline-start: 0;
  margin-inline-end: 8px;

  .radio {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    position: inherit;
    display: inline-block;
    outline: none;
    align-self: center;

    & + * {
      padding-inline-start: 8px;
      padding-inline-end: 8px;
    }

    &.checked::after {
      position: absolute;
      inset-block-start: 0;
      inset-inline-start: 0;
      width: 100%;
      height: 100%;
      border: 1px solid #1677FF;
      border-radius: 50%;
      visibility: hidden;
      animation-name: radioEffect;
      animation-duration: .3s;
      animation-timing-function: cubic-bezier(.645, .045, .355, 1);
      animation-fill-mode: both;
      content: '';
    }

    input.radio-input {
      position: absolute;
      inset-block-start: 0;
      inset-block-end: 0;
      inset-inline-start: 0;
      inset-inline-end: 0;
      z-index: 1;
      cursor: pointer;
      opacity: 0;
    }
    .radio-inner {
      box-sizing: border-box;
      position: relative;
      inset-block-start: 0;
      inset-block-end: 0;
      display: block;
      width: 16px;
      height: 16px;
      background-color: #FFF;
      border-color: #D9D9D9;
      border-style: solid;
      border-width: 1px;
      border-radius: 50%;
      transition: all .2s;
      &::after {
        box-sizing: border-box;
        position: absolute;
        inset-block-start: 50%;
        inset-inline-start: 50%;
        display: block;
        width: 16px;
        height: 16px;
        margin-block-start: -8px;
        margin-inline-start: -8px;
        background-color: #FFF;
        border-block-start: 0;
        border-inline-start: 0;
        border-radius: 16px;
        transform: scale(0);
        opacity: 0;
        transition: all .3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
        content: '';
      }
      &.checked {
        border-color: #1677FF;
        background-color: #1677FF;

        &::after {
          transform: scale(.375);
          opacity: 1;
          transition: all .3s cubic-bezier(.78, .14, .15, .86);
        }
      }
    }
  }
}

@keyframes radioEffect {
  0% {
    transform: scale(1);
    opacity: 0.5;
  }
  100% {
    transform: scale(1.6);
    opacity: 0;
  }
}